<?php
ob_start();
require_once (CAMINHO_SERVIDOR . 'configs.php');
require_once(PASTA_ADBDO_ALL . 'adodb.inc.php');
require_once(PASTA_CONEXAO . "Conexao.class.php");
require_once (PASTA_SMARTY . '/Funcoes.class.php');

class Usuarios {

    public function getNomeUsuario() {
        return $_SESSION['usuario'];
    }

    public function getIdUsuario() {
        return $_SESSION['id_usuario'];
    }

    public function getConexao() {
        if ($this->objCon == null)
            $this->objCon = Conexao::getConexao();
        return $this->objCon;
    }

    public function logar($email, $senha) {
        try {
            $result = false;
            $sql = "SELECT * FROM tb_usuario WHERE email_usuario='" . $email . "' AND password_usuario='" . $senha . "' AND status=1 AND via_facebook='N' ";
            //Funcoes::debuga($sql);
            $rs = self::getConexao()->GetRow($sql);
            if (!empty($rs)) {
                session_start();
                //gravo as informações das variáveis dentro das sessões
                self::setSessionUser($rs["nome_usuario"], $rs["id_usuario"], $rs["id_grupo"]);
                $result = true;
            }
        } catch (Exception $e) {
            self::getConexao()->Close();
            echo(Funcoes::organizaMsgErro("Erro ao Logar", $e));
        }
        return $result;
    }

    public function logarFacebook($email, $nome) {
        try {
            $sql = "SELECT * FROM tb_usuario WHERE email_usuario='" . $email . "'";
            $rs = self::getConexao()->GetRow($sql);
            if (empty($rs)) {
                $email = Funcoes::anti_injection($email);
                $nome = Funcoes::anti_injection($nome);
                $insert = "INSERT INTO tb_usuario (nome_usuario,email_usuario, id_grupo, via_facebook) VALUES ('" . $nome . "', '" . $email . "'," . USUARIO_VISITANTE . ",'S')";
                $con = self::getConexao();
                $con->Execute($insert);
                $sql = "SELECT * FROM tb_usuario WHERE email_usuario='" . $email . "'";
                $dadosUser = self::getConexao()->GetRow($sql);
                $validacao = "1";
                session_start();
                $_SESSION['usuario'] = $dadosUser["nome_usuario"];
                $_SESSION['id_usuario'] = $dadosUser["id_usuario"];
                $_SESSION['validacao'] = $validacao;
            } else {
                $sql = "SELECT * FROM tb_usuario WHERE email_usuario='" . $email . "'";
                $dadosUser = self::getConexao()->GetRow($sql);
                //Funcoes::debuga($dadosUser);
                $validacao = "1";
                session_start();
                $_SESSION['usuario'] = $dadosUser["nome_usuario"];
                $_SESSION['id_usuario'] = $dadosUser["id_usuario"];
                $_SESSION['validacao'] = $validacao;
            }
        } catch (Exception $e) {
            self::getConexao()->Close();
            echo(Funcoes::organizaMsgErro("Erro ao LogarFacebook", $e));
        }
    }

    public function buscaEmailUser($email) {
        $sql = "SELECT email_usuario FROM tb_usuario WHERE email_usuario='" . $email . "'";
        $rs = end(self::getConexao()->GetRow($sql));

        return $rs;
    }

    public function buscaTodosDadosUser($idUser) {
        $sql = "SELECT * FROM tb_usuario WHERE id_usuario=" . $idUser;
        $rs = self::getConexao()->GetRow($sql);

        return $rs;
    }

    public function gravaUsuarioFacebook($nome, $email) {
        $result = false;
        $con = self::getConexao();
        $email = self::buscaEmailUser($email);
        try {
            if (empty($email)) {
                $senha = md5(self::geraSenha());
                Funcoes::debuga($senha);
                $sql = "INSERT INTO tb_usuario (nome_usuario,email_usuario,password_usuario,id_grupo,via_facebook) 
                    VALUES ('" . $nome . "', '" . $email . "','" . $senha . "','" . USUARIO_VISITANTE . "','S')";
                $con->Execute($sql);
                $result = true;
            }
        } catch (Exception $e) {
            $result = false;
            self::getConexao()->Close();
            echo(Funcoes::organizaMsgErro("Erro ao gravar Usuário", $e));
        }
        return $result;
    }

    /**
     * Função para setar a sessão de usuário do sistema
     *
     * @author Fernando Braga <fernando.braga.silva2012@hotmail.com>
     *
     * @param string $usuario - Nome de usuário para a sessão
     * @param integer $idUser - Id de usuário para a sessão
     *
     */
    public function setSessionUser($usuario, $idUser, $idGrupo) {
        $validacao = "1"; //usaremos essa variável para verificar se ele está logado, se o usuário não tiver o valor 1 nessa variável ele não está logado!
        session_start();
        $_SESSION['usuario'] = $usuario;
        $_SESSION['id_usuario'] = $idUser;
        $_SESSION['id_grupo'] = $idGrupo;
        $_SESSION['validacao'] = $validacao;
    }

    /**
     * Função para gerar senhas aleatórias
     *
     * @author&nbsp;&nbsp;&nbsp; Thiago Belem <contato@thiagobelem.net>
     *
     * @param integer $tamanho Tamanho da senha a ser gerada
     * @param boolean $maiusculas Se terá letras maiúsculas
     * @param boolean $numeros Se terá números
     * @param boolean $simbolos Se terá símbolos
     *
     * @return string A senha gerada
     */
    function geraSenha($tamanho = 8, $maiusculas = true, $numeros = true, $simbolos = false) {
        $lmin = 'abcdefghijklmnopqrstuvwxyz';
        $lmai = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
        $num = '1234567890';
        $simb = '!@#$%*-';
        $retorno = '';
        $caracteres = '';

        $caracteres .= $lmin;
        if ($maiusculas)
            $caracteres .= $lmai;
        if ($numeros)
            $caracteres .= $num;
        if ($simbolos)
            $caracteres .= $simb;

        $len = strlen($caracteres);
        for ($n = 1; $n <= $tamanho; $n++) {
            $rand = mt_rand(1, $len);
            $retorno .= $caracteres[$rand - 1];
        }
        return $retorno;
    }

}

?>